Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Exceptions
8 Die Funktionsbibliothek
9 Threads und nebenläufige Programmierung
10 Raum und Zeit
11 Datenstrukturen und Algorithmen
12 Dateien und Datenströme
13 Die eXtensible Markup Language (XML)
14 Grafische Oberflächen mit Swing
15 Grafikprogrammierung
16 Das Netz
17 JavaServer Pages und Servlets
18 Verteilte Programmierung mit RMI und Web–Services
19 Applets, Midlets und Sound
20 Datenbankmanagement mit JDBC
21 Reflection und Annotationen
22 Komponenten durch Bohnen
23 Logging und Monitoring
24 Sicherheitskonzepte
25 Java Native Interface (JNI)
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Index

Download:
- ZIP, ca. 12,5 MB
Buch bestellen

Website zum Buch
Weblog des Autors
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel

Java ist auch eine Insel
6., akt. und erw. Aufl., mit DVD
1.454 S., 49,90 Euro
Galileo Computing
ISBN 3-89842-838-9
gp 14 Grafische Oberflächen mit Swing
  gp 14.1 Das Abstract-Window-Toolkit und Swing
    gp 14.1.1 Java Foundation Classes
    gp 14.1.2 Was Swing vom AWT unterscheidet
    gp 14.1.3 Peer-Klassen und Lightweight-Komponenten
    gp 14.1.4 Die Klasse Toolkit
  gp 14.2 Fenster unter grafischen Oberflächen
    gp 14.2.1 Swing-Fenster darstellen
    gp 14.2.2 Fenster schließbar machen – setDefaultCloseOperation()
    gp 14.2.3 AWT-Fenster darstellen
    gp 14.2.4 Sichtbarkeit des Fensters
    gp 14.2.5 Größe und Position des Fensters verändern
    gp 14.2.6 Unterklassen der Fenster-Klassen bilden
    gp 14.2.7 Fenster- und Dialog-Dekoration
    gp 14.2.8 Dynamisches Layout während einer Größenänderung
  gp 14.3 Beschriftungen über die Klasse JLabel
    gp 14.3.1 Mehrzeiliger Text, HTML in der Darstellung
  gp 14.4 Es tut sich was – Ereignisse beim AWT
    gp 14.4.1 Die Klasse AWTEvent
    gp 14.4.2 Events auf verschiedenen Ebenen
    gp 14.4.3 Ereignisquellen und Horcher (Listener)
    gp 14.4.4 Listener implementieren
    gp 14.4.5 Listener bei dem Ereignisauslöser anmelden/abmelden
    gp 14.4.6 Aufrufen der Listener im AWT-Event-Thread
    gp 14.4.7 Adapterklassen nutzen
    gp 14.4.8 Innere Mitgliedsklassen und innere anonyme Klassen
    gp 14.4.9 Generic Listener
  gp 14.5 Schaltfläche
    gp 14.5.1 Der JButton
    gp 14.5.2 Der aufmerksame ActionListener
    gp 14.5.3 AbstractButton
    gp 14.5.4 JToggleButton
  gp 14.6 Icon und ImageIcon für Bilder auf Swing-Komponenten
    gp 14.6.1 Die Schnittstelle Icon
    gp 14.6.2 Was Icon und Image verbindet
  gp 14.7 JComponent und Component als Basis aller Komponenten
    gp 14.7.1 Ereignisse jeder Komponente
    gp 14.7.2 Die Größe eine Komponente
    gp 14.7.3 Die Position der Komponente
    gp 14.7.4 Properties
    gp 14.7.5 Fokus
    gp 14.7.6 Komponenten-Ereignisse
    gp 14.7.7 Hinzufügen von Komponenten
    gp 14.7.8 Zeichnen von Komponenten und die Undurchsichtigkeit
    gp 14.7.9 Tooltips
    gp 14.7.10 Rahmen (Border)
  gp 14.8 Container
    gp 14.8.1 JPanel
    gp 14.8.2 JScrollPane
    gp 14.8.3 JTabbedPane
    gp 14.8.4 JSplitPane
  gp 14.9 Alles Auslegungssache: die Layoutmanager
    gp 14.9.1 Übersicht über Layoutmanager
    gp 14.9.2 Zuweisen eines Layoutmanagers
    gp 14.9.3 Im Fluss mit FlowLayout
    gp 14.9.4 Mit BorderLayout in allen Himmelsrichtungen
    gp 14.9.5 Rasteranordnung mit GridLayout
    gp 14.9.6 Der GridBagLayout-Manager
    gp 14.9.7 Null-Layout
    gp 14.9.8 BoxLayout
    gp 14.9.9 Weitere Layoutmanager
  gp 14.10 Rollbalken und Slider
    gp 14.10.1 Der Schieberegler JSlider
    gp 14.10.2 Der Rollbalken JScrollBar
  gp 14.11 Kontrollfelder, Optionsfelder, Kontrollfeldgruppen
    gp 14.11.1 Kontrollfelder (JCheckBox)
    gp 14.11.2 Ereignisse über ItemListener
    gp 14.11.3 Sich gegenseitig ausschließende Optionen (JRadioButton)
  gp 14.12 Der Fortschrittsbalken JProgressBar
  gp 14.13 Menüs und Symbolleisten
    gp 14.13.1 Die Menüleisten und die Einträge
    gp 14.13.2 Menüeinträge definieren
    gp 14.13.3 Einträge durch Action-Objekte beschreiben
    gp 14.13.4 Mnemonics und Shortcuts (Accelerator)
    gp 14.13.5 Symbolleisten alias Toolbars
    gp 14.13.6 Popup-Menüs
    gp 14.13.7 System-Tray nutzen
  gp 14.14 Das Konzept des Model-View-Controllers
  gp 14.15 Auswahlmenüs, Listen und Spinner
    gp 14.15.1 Das Auswahlmenü JComboBox
    gp 14.15.2 Zuordnung einer Taste mit einem Eintrag
    gp 14.15.3 Datumsauswahl
    gp 14.15.4 Die JList
    gp 14.15.5 JSpinner
  gp 14.16 Texteingabefelder
    gp 14.16.1 Text in einer Eingabezeile
    gp 14.16.2 Die Oberklasse der JText-Komponenten: JTextComponent
    gp 14.16.3 JPasswordField
    gp 14.16.4 Validierende Eingabefelder
    gp 14.16.5 Mehrzeilige Textfelder
    gp 14.16.6 Die Editor-Klasse JEditorPane
  gp 14.17 Bäume mit JTree-Objekten
    gp 14.17.1 Selektionen bemerken
  gp 14.18 Tabellen mit JTable
    gp 14.18.1 Ein eigenes Tabellen-Model
    gp 14.18.2 AbstractTableModel
    gp 14.18.3 DefaultTableModel
    gp 14.18.4 Ein eigener Renderer für Tabellen
    gp 14.18.5 Zell-Editoren
    gp 14.18.6 Größe und Umrandung der Zellen
    gp 14.18.7 Spalteninformationen
    gp 14.18.8 Tabellenkopf von Swing-Tabellen
    gp 14.18.9 Selektionen einer Tabelle
    gp 14.18.10 Automatisches Sortieren und Filtern mit RowSorter
    gp 14.18.11 Ein professionelles Tabellenlayout mit JGrid
  gp 14.19 JRootPane, JLayeredPane und JDesktopPane
    gp 14.19.1 JRootPane
    gp 14.19.2 JLayeredPane
    gp 14.19.3 JDesktopPane und die Kinder JInternalFrame
  gp 14.20 Dialoge und Window-Objekte
    gp 14.20.1 JWindow und JDialog
    gp 14.20.2 Modal oder nicht-modal
    gp 14.20.3 Standarddialoge mit JOptionPane
    gp 14.20.4 Der Farbauswahldialog JColorChooser
    gp 14.20.5 Der Dateiauswahldialog
  gp 14.21 Flexibles Java-Look
    gp 14.21.1 L&F
    gp 14.21.2 UIManager
    gp 14.21.3 Verbessern des Aussehens unter Windows mit JGoodies Looks
    gp 14.21.4 Swing-Beschriftungen eine andere Sprache geben
  gp 14.22 Die Zwischenablage (Clipboard)
    gp 14.22.1 Clipboard-Objekte
    gp 14.22.2 Auf den Inhalt zugreifen mit Transferable
    gp 14.22.3 DataFlavor ist das Format der Daten in der Zwischenablage
    gp 14.22.4 Einfügungen in der Zwischenablage erkennen
    gp 14.22.5 Drag
  gp 14.23 Undo durchführen
  gp 14.24 AWT, Swing und die Threads
    gp 14.24.1 Swing ist nicht thread-sicher
    gp 14.24.2 Swing-Elemente mit invokeLater() und invokeAndWait() bedienen
    gp 14.24.3 SwingWorker
    gp 14.24.4 Eigene Ereignisse in die Queue setzen
    gp 14.24.5 Auf alle Ereignisse hören
  gp 14.25 Selbst definierte Cursor
  gp 14.26 Benutzerinteraktionen automatisieren
    gp 14.26.1 Automatisch in die Tasten hauen
    gp 14.26.2 Mausoperationen
    gp 14.26.3 Methoden zur Zeitsteuerung
    gp 14.26.4 Screenshots
    gp 14.26.5 Funktionsweise und Beschränkungen
    gp 14.26.6 MouseInfo und PointerInfo
  gp 14.27 Zeitliches Ausführen mit dem javax.swing.Timer
  gp 14.28 Alternativen zu AWT und Swing
    gp 14.28.1 XML-Beschreibungen der Oberfläche: Swixml, XUL/Luxor
    gp 14.28.2 SWT
  gp 14.29 Zum Weiterlesen


Galileo Computing

14.21 Flexibles Java-Look & Feel  downtop

Das Aussehen der Komponenten lässt sich frei bestimmen und erzeugt so bei jedem Benutzer auf seiner Architektur die Illusion, es wäre eine plattformabhängige Applikation. Das Programm gliedert sich hinsichtlich des Aussehens in die anderen Programme ein und fällt nicht als Fremdling auf. Standardmäßig begegnet uns das Look & Feel (L&F) mit dem Namen »Ocean« (früher war es »Metal«).

Um das Aussehen von Java-Applikationen zu ändern, gibt es eine Reihe von Möglichkeiten:

  • Beim Programmstart einen Schalter setzen
  • Eine Konfigurationsdatei in das lib-Verzeichnis setzen
  • Im Java-Programm von Hand das L&F verändern

Galileo Computing

14.21.1 L&F global setzten  downtop

Um für alle Java-Programme zentral ein L&F zu setzen, wird in das C:\Program-me\Java\jdk1.6.0\jre\lib-Verzeichnis eine kleine Datei swing.properties gesetzt:

Listing 14.61    swing.properties

swing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel

Der Schalter swing.defaultlaf bestimmt die Klasse für das L&F; in unserem Fall Windows. Automatisch nehmen alle gestarteten Java-Programme dieses Standard-L & F an – es sei denn, sie setzen es wieder im Programm um. Das zeigen die folgenden Abschnitte.


Galileo Computing

14.21.2 UIManager  downtop

Das L&F von Applikationen lässt sich zur Laufzeit ändern. Dazu müssen wir nur eine statische Methode der Klasse UIManager aufrufen, die sich um das Aussehen der Programme kümmert. Hier ist es die spezielle Methode setLookAndFeel(), die als Argument einen Klassennamen erwartet. Verschiedene Methoden sind deklariert, mit denen wir das Java-eigene L&F und das System-L&F einstellen können. Da Benutzer von Java-Programmen im Allgemeinen eine Systemoberfläche erwarten, sollten wir das Java-L&F nach dem Erzeugen des Fensters umschalten.


public class javax.swing.UIManager implements Serializable


  • static LookAndFeel getLookAndFeel() Gibt das aktuelle L&F zurück.
  • static String getSystemLookAndFeelClassName() Gibt das L&F des aktuellen Fenstersystems zurück.
  • static String getCrossPlatformLookAndFeelClassName() Liefert den Namen der Klassen für das systemunabhängige L&F.
  • static void setLookAndFeel( String className ) throws ClassNotFoundException, InstantiationException,          IllegalAccessException, UnsupportedLookAndFeelException Setzt ein neues L&F.

Beispiel Der folgende Programmblock setzt mit setLookAndFeel() das Aussehen einer Oberfläche, wie es das System vorgibt. Die Programme sollten dann wie native Programme aussehen.

Listing 14.62    com/javatutor/insel/ui/swing/SetLookAndFeel.java, Ausschnit

try { 
  UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() ); 
} catch( Exception e ) { e.printStackTrace(); }

Einige spezielle L&F sind nicht auf jeder Architektur erlaubt. So verbietet Apple sein eigenes L&F auf Plattformen anderer Hersteller. [Apple betrachtete die Windows-Version 2.1 als Look-And-Feel-Clone und verklagte Microsoft ab 1988 wegen Urheberrechtsverletzungen auf eine Summe von über fünf Milliarden US-Dollar. Letztendlich bekam Apple aber nichts; das Verfahren wurde 1997 eingestellt. 1989 klagte Xerox gegen Apple und beanspruchte das Urheberrecht an grafischen Oberflächen für sich. ] Dennoch lässt sich das Aqua-L&F installieren, in den Pfad integrieren und dann als com.apple.mrj.swing.MacLookAndFeel einbinden. Weitere Infos dazu bietet die Webseite http://www.ing.unitn.it/~luttero/javaonMac/.

Ändern des Aussehens zur Laufzeit

Das Setzen eines L & Fs mit setLookAndFeel() führt zu keinem Neuzeichnen der Komponenten. Wird das neue L & F gesetzt, bevor Swing die Komponenten darstellen muss, fällt das nicht auf. Mit dargestellten Komponenten müssen wir jedoch das Neuzeichnen anstoßen. Dazu dient die Methode:

SwingUtilities.updateComponentTreeUI( component );

Die component wird im Allgemeinen das Window (also JFrame/JWindow) sein.

Ein Problem ergibt sich, wenn der Frame noch Window-Objekte erzeugt, da diese immer Kinder eines Fensters sind; Änderungen des Aussehens müssen an diese Kinder weitergegeben werden. Dazu erfragen wir zuerst alle Fenster über die statische Funktion Frame.get-Frames().Anschließend laufen wir vom Fenster alle Windows ab, die wir dann aktualisieren.

for ( Frame f : Frame.getFrames() ) 
{ 
  SwingUtilities.updateComponentTreeUI( f ); 
 
  for ( Window w : f.getOwnedWindows()  ) 
    SwingUtilities.updateComponentTreeUI( w ); 
}

Galileo Computing

14.21.3 Verbessern des Aussehens unter Windows mit JGoodies Looks  downtop

Zwar bemühte sich Sun bis Java 6 bestmöglich das Windows XP-Look & Feel zu emulieren, doch an allen Stellen gelingt das nicht. Seit Java 6 nutzt das System den nativen Windows-Renderer, so dass Unstimmigkeiten eigentlich ausgeschlossen sein sollten. Verbesserungen lassen sich auch nicht so einfach publizieren, da Sun an Release-Zyklen gebunden ist. In diesem Fall hilft JGoodies Looks (https://slooks.dev.java.net/), ein Look and Feel unter der BSD-Lizenz. Das Ziel von Looks ist die perfekte Nachbildung des Aussehens für die Windows-Reihen 95/98/NT/ME/2000/2003/XP/Vista ab Java 1.4. Gegenüber dem Windows Look and Feel von Sun korrigiert es viele Feinheiten, wie passende Insets bei Eingabefeldern, Icons, Farben, Rahmen, den richtigen Font, Menüeigenschaften, Auflösungen von 96 und 120 dpi und vieles mehr.

Gesetzt wird Looks wie jedes andere Look & Feel:

try { 
String laf = 
    LookUtils.IS_OS_WINDOWS_XP 
        ? Options.getCrossPlatformLookAndFeelClassName() 
        : Options.getSystemLookAndFeelClassName(); 
    UIManager.setLookAndFeel( laf ); 
} catch ( Exception e ) { 
    System.err.println( "Can't set look & feel:" + e ); 
}

Galileo Computing

14.21.4 Swing-Beschriftungen eine andere Sprache geben  toptop

Die Swing-Komponenten sind von Haus aus lokalisiert. So begegnet dem Anwender ein Dateiauswahldialog unter dem deutschen System auch mit deutschen Beschriftungen. Die Sprache lässt sie über das passende Locale-Objekt ändern. So setzt für neue Komponenten folgendes die Sprache auf Arabisch:

JComponent.setDefaultLocale( new Locale("ar") );

Mit der Änderung auf eine Sprache, die von rechts nach links schreibt, ist automatisch eine Umsortierung der Komponenten verbunden, wenn diese zum Beispiel in einem Container mit FlowLayout liegen.

Ändern der Zeichenfolgen

Die Zeichenketten selbst werden aus einer Ressourcen-Datei gelesen und sind im UIManager present.


Beispiel Um die deutsche Beschriftung »Suchen in:« im Dateiauswahldialog zu ersetzen, ist die Eigenschaft FileChooser.lookInLabelText zu setzen:

Listing 14.63    com/javatutor/insel/ui/swing/LocalizeSwingChooser.java, main()

UIManager.put( "FileChooser.lookInLabelText" ,"Worin'e suchen tust:" ); 
new JFileChooser().showOpenDialog( null ); 
System.exit( 0 );

Eine Liste aller zu setzenden Properties ist etwa auf der Webseite http://www.rgagnon.com/javadetails/JavaUIDefaults.txt aufgelistet.

Um für alle Programme die Änderungen gültig zu machen, sollten für das verwendete Look and Feel .properties-Dateien angelegt werden. Die Dateien müssen dann im Programmpfad stehen. So sehen die Dateipfade für Windows und Metal folgendermaßen aus:

  • com/sun/java/swing/plaf/windows/resources/windows_de.properties
  • javax/swing/plaf/metal/resources/metal_de.properties

Die Dateien sind die bekannten Ressourcen-Dateien mit den Schlüsseln, die in Java-UIDefaults.txt genannt sind.


Beispiel Um unter dem Windows-Look and Feel global einen Bezeichner für den Dateiauswahldialog zu ändern, setzen wir in windows_de.properties:
FileChooser.lookInLabelText=Worin'e suchen tust:



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.





 <<   zurück



Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de